Minulla on alla oleva tietojoukko nimi col1 col2 a 10,3 10,9 b 11 15 c 20 7.2 d 6,2 6,2 e 5,3 5,4 f 4,5 4,0 Haluan verrata df: n col1 ja col2 ja haluan tehdä toisen sarakkeen, jossa verrattaessa col1- ja col2-arvoja, jos col2: n arvo kasvaa col1: stä, haluan sitten lisätä niiden vieressä sarakkeeseeni ja jos laskeva sitten haluan kirjoittaa laskeva eikä muutoksia, jos ne ovat samat ja haluan tuotokseni tältä nimi col1 col2 col3 a 10,3 10,9 kasvaa b 11 15 kasvaa c 20 7,2 laskeva d 6,2 6,2 ei muutosta e 5,3 5,4 kasvaa f 4,5 4,0 laskeva
2021-01-31 08:15:07
Dplyrin kanssa: df%>% mutaatio (Col3 = ifelse (col2 == col1, "ei muutosta", ifelse (col2> col1, "kasvava", "laskeva"))) Tai käyttämällä case_when @akrunin ehdottamia: df%>% mutaatio (Col3 = tapaus_milloin (kol1 == kol2 ~ "ei muutosta", col2> col1 ~ "Lisääntyvä", TOSI ~ "vähenee")) Tulos: nimi col1 col2 Col3 1 a 10,3 10,9 kasvaa 2 b 11,0 15,0 kasvaa 3 c 20,0 7,2 laskeva 4 p 6,2 6,2 ei muutosta 5 e 5,3 5,4 kasvaa 6 f 4,5 4,0 laskeva Tiedot: df <-rakenne (luettelo (nimi = c ("a", "b", "c", "d", "e", "f"), col1 = c (10,3, 11, 20, 6.2, 5.3, 4.5), col2 = c (10.9, 15, 7.2, 6.2, 5.4, 4)), class = "data.frame", rivinimet = c (NA -6L)) | Voimme vähentää col1: n col2: lla ja käyttää sitten merkkiä arvon määrittämiseen df $ col3 <- c ("vähenee", "ei muutosta", "kasvaa") [merkki (df $ col1 - df $ col2) + 2] df # nimi col1 col2 col3 # 1 a 10,3 10,9 laskeva # 2 b 11,0 15,0 laskeva # 3 c 20,0 7,2 kasvaa # 4 d 6.2 6.2 ei muutosta # 5 e 5,3 5,4 laskussa # 6 f 4,5 4,0 kasvaa Tai käyttämällä dplyria voimme käyttää case_when kirjasto (dplyr) df%>% mutaatio (col3 = tapaus_milloin (col1 == col2 ~ "ei muutosta", col1> col2 ~ "kasvaa", TOSI ~ "vähenee")) | Pohja R df $ col3 <-with (df, ifelse (col1> col2, "laskeva", ifelse (col1